home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Resource for Source: C/C++
/
Resource for Source - C-C++.iso
/
codelib6
/
v_08_11
/
8n11045a
< prev
next >
Wrap
Text File
|
1995-11-01
|
2KB
|
55 lines
#define PIPENAME "\\PIPE\SAMPLE.PIP"
#define DEFAULT_TIMEOUT 5000L // 5 seconds
static HPIPE hPipe;
static USHORT usNoBytes, usRC;
static CHAR acInBuf[4096], acOutBuf[4096];
DosMakeNmPipe(PIPENAME, &hPipe, PIPE_ACCESS_DUPLEX,
PIPE_WAIT | PIPE_TYPE_MESSAGE
| PIPE_UNLIMITED_INSTANCES,
sizeof(acOutBuf), sizeof(acInBuf),
DEFAULT_TIMEOUT);
while (TRUE)
{
DosConnectNmPipe(hPipe);
while (TRUE)
{
usRC = DosRead(hPipe, acInBuf, sizeof(acInBuf),
&usNoBytes);
if (usRC || 0 == usNoBytes)
break;
// Process request - format output in acOutBuf and
// response length in usNoBytes
DosWrite(hPipe, acOutBuf, usNoBytes, &usNoBytes);
}
DosDisConnectNmPipe(hPipe);
}
while (TRUE)
{
usRC = DosOpen(PIPENAME, &hPipe, &usAction, 0L,
FILE_NORMAL, FILE_OPEN,
OPEN_ACCESS_READWRITE, 0L);
if (0 == usRC)
break;
DosWaitNmPipe(PIPENAME, NP_DEFAULT_WAIT);
}
while (bRequests) // while requests to be processed
{
// Construct request in acOutBuf, length in usNoBytes
DosTransactNmPipe(hPipe, acOutBuf, usNoBytes,
acInBuf, &usNoBytes);
// Process response in acInBuf, length in usNoBytes
}
DosClose(hPipe);